home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chaos CD Blue
/
Chaos_CD_Blue__[1999].iso
/
www_ccc_de
/
Hacks
/
TOLHACK.ZIP
/
UNIT1.PAS
< prev
Wrap
Pascal/Delphi Source File
|
1997-12-18
|
4KB
|
164 lines
unit Unit1;
interface
uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, inifiles;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Label1: TLabel;
Button1: TButton;
Button2: TButton;
Label2: TLabel;
Label3: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
const
{ Jeder String = 1 Zeichen ...
FXD^ = 48 = '0'
F\F` = 65 = 'A'
H`Fb = 90 = 'Z'
F\Hd = 97 = 'a'
H`Hf = 122 = 'z'
}
B : array[0..79] of string[4] =(
'FXD^','F\D^','F`D^','FdD^',
'GXD^','G\D^','G`D^','GdD^',
'HXD^','H\D^','H`D^','HdD^',
'IXD^','I\D^','I`D^','IdD^',
'FXF`','F\F`','F`F`','FdF`',
'GXF`','G\F`','G`F`','GdF`',
'HXF`','H\F`','H`F`','HdF`',
'IXF`','I\F`','I`F`','IdF`',
'FXFb','F\Fb','F`Fb','FdFb',
'GXFb','G\Fb','G`Fb','GdFb',
'HXFb','H\Fb','H`Fb','HdFb',
'IXFb','I\Fb','I`Fb','IdFb',
'FXHd','F\Hd','F`Hd','FdHd',
'GXHd','G\Hd','G`Hd','GdHd',
'HXHd','H\Hd','H`Hd','HdHd',
'IXHd','I\Hd','I`Hd','IdHd',
'FXHf','F\Hf','F`Hf','FdHf',
'GXHf','G\Hf','G`Hf','GdHf',
'HXHf','H\Hf','H`Hf','HdHf',
'IXHf','I\Hf','I`Hf','IdHf'
);
implementation
{$R *.DFM}
procedure Kopiere(Quelle,Ziel:String);
var
F1, F2 : File;
NumRead, NumWritten: Word;
Buf: array[1..4000] of Char;
begin
{$I-}
AssignFile(F1, Quelle); {kopiere von Quelle nach Ziel}
Reset(F1,1);
AssignFile(F2, Ziel);
Rewrite(F2,1);
repeat
BlockRead (F1, Buf, SizeOf(Buf), NumRead);
BlockWrite(F2, Buf, NumRead , NumWritten);
until (NumRead = 0) or (NumWritten <> NumRead);
CloseFile(F2);
CloseFile(F1);
{$I+}
end;
function decoder1(Passw:string):string;
var
min,p,i,ii :integer;
Ergebnis:string;
begin
Ergebnis:='';
min:=999; { das erste vernⁿnftige Zeichen suchen }
for i:=0 to 79 do
begin
p:=pos(b[i],Passw);
if ((p>0) and (p<min)) then min:=p;
end;
i:=min; { ab da dekodieren (4 Zeichen zu 1 Zeichen ) }
while i<length(Passw) do
begin
for ii:=0 to 79 do
begin
if copy(Passw,i,4)=b[ii] then { Zeichen gefunden ? }
begin
Ergebnis:=Ergebnis+chr(ii+48); { Ja, zum Ergebnis dazu }
end; { Position im Array+48 = Zeichen }
end;
i:=i+4;
end;
decoder1:=Ergebnis;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
windir :pchar;
winini :Tinifile;
dbserver :Tinifile;
path,pw,tel,ak1,ak2:string;
begin
{ Pfad zu T-Online aus Win.Ini }
winini:=Tinifile.create('win.ini');
path :=winini.readstring('T-Online-Decoder','Path',' ');
path:=copy(path,1,length(path)-10)+'DBSERVER.INI';
winini.free;
{ DBSERVER.INI ins Windows Verzeichnis kopieren zum lesen }
GetMem(WinDir, 144);
GetWindowsdirectory(WinDir, 144);
strcat(Windir,'\DBSERVER.INI');
Kopiere(path,Strpas(Windir));
{ DBSERVER lesen }
dbserver:=Tinifile.create('dbserver.ini');
pw :=dbserver.readstring('Bereich1' ,'Gruppe3',' ');
Tel:=dbserver.readstring('Bereich5' ,'Gruppe2',' ');
ak1:=dbserver.readstring('Bereich20','Gruppe3',' ');
ak2:=dbserver.readstring('Bereich20','Gruppe4',' ');
dbserver.free;
{ Dekodieren und ausgeben }
edit1.text:=copy(decoder1(ak1),1,5); {Anschlu▀kennung Teil 1 erste 5 Zeichen }
edit1.text:=edit1.text+decoder1(ak2); {Anschlu▀kennung Teil 2 }
edit2.text:=decoder1(Tel); {Telefonnummer}
edit3.text:=copy(decoder1(ak1),6,999); {Mitbenutzer = Zeichen 6 bis .. }
edit4.text:=decoder1(pw); {Passwort}
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
application.terminate;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
button1.setfocus;
end;
end.